home *** CD-ROM | disk | FTP | other *** search
- {
-
- PB> It's me again. I need code to detect a SB/SB Compat. card. I have
- PB> code which will detect the port, but I also need a way of detecting the
- PB> SB's IRQ and DMA channel. Is there any such code available?
-
- This code was just posted about 2 weeks ago (I believe)... }
-
-
- Program DetectSoundBlaster;
-
- Uses DOS, CRT;
-
- Function hex(a : Word; b : Byte) : String;
- Const digit : Array[$0..$F] Of Char = '0123456789ABCDEF';
- Var i : Byte;
- xstring : String;
- Begin
- xstring:='';
- For i:=1 To b Do
- Begin
- Insert(digit[a And $000F], xstring, 1);
- a:=a ShR 4
- End;
- hex:=xstring
- End; {hex}
-
- Procedure SoundPort;
- Var xbyte1, xbyte2, xbyte3, xbyte4: Byte;
- xword, xword1, xword2, temp, sbport: Word;
- sbfound, portok: Boolean;
-
- Begin
- ClrScr;
- Write('Sound Blaster: ');
- sbfound:=False;
- xbyte1:=1;
- While (xbyte1 < 7) And (Not sbfound) Do
- Begin
- sbport:=$200 + ($10 * xbyte1);
- xword1:=0;
- portok:=False;
- While (xword1 < $201) And (Not portok) Do
- Begin
- If (Port[sbport + $0C] And $80) = 0 Then
- portok:=True;
- Inc(xword1)
- End;
- If portok Then
- Begin
- xbyte3:=Port[sbport + $0C];
- Port[sbport + $0C]:=$D3;
- For xword2:=1 To $1000 Do {nothing};
- xbyte4:=Port[sbport + 6];
- Port[sbport + 6]:=1;
- xbyte2:=Port[sbport + 6];
- xbyte2:=Port[sbport + 6];
- xbyte2:=Port[sbport + 6];
- xbyte2:=Port[sbport + 6];
- Port[sbport + 6]:=0;
- xbyte2:=0;
- Repeat
- xword1:=0;
- portok:=False;
- While (xword1 < $201) And (Not portok) Do
- Begin
- If (Port[sbport + $0E] And $80) = $80 Then
- portok:=True;
- Inc(xword1)
- End;
- If portok Then
- If Port[sbport + $0A] = $AA Then
- sbfound:=True;
- Inc(xbyte2);
- Until (xbyte2 = $10) Or (portok);
- If Not portok Then
- Begin
- Port[sbport + $0C]:=xbyte3;
- Port[sbport + 6]:=xbyte4;
- End;
- End;
- If sbfound Then
- Begin
- Write('Yes');
- Write(' Port: ');
- Write('$', Hex(sbport, 3));
- End
- Else
- Inc(xbyte1);
- End;
- If Not sbfound Then
- Write('No');
- End;{soundport}
-
- Begin
- SoundPort;
- End.
-